﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ProjetoBo.cs;
using ProjetoBe.cs;
using ProjetoUtil;


namespace ProjetoForm.Controles
{
    public partial class cadastroPesquisa : UserControl
    {
        PesquisaBe novapesquisa = new PesquisaBe();
        PesquisaBo pesquisaBo = new PesquisaBo();
        Util util = new Util();

        FlowLayoutPanel Conteudo { get; set; }
        public cadastroPesquisa(FlowLayoutPanel conteudo)
        {
            InitializeComponent();
            grid_pesquisa.DataSource = pesquisaBo.recebePesquisa();
            Conteudo = conteudo;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            panel_adicionar.Visible = true;
        }

        public void limparTela()
        {
            txt_pergunta.Text = string.Empty;
            txt_resp1.Text = string.Empty;
            txt_resp2.Text = string.Empty;
            txt_resp3.Text = string.Empty;
            chk_ativar.Checked = false;
        }

        public void registrarOutraPesquisa()
        {
            string caption = "Cadastro de Pesquisa";
            var result = MessageBox.Show("Cadastro realizado com sucesso ! \n\nDeseja cadastrar outra Pesquisa ? ", caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (result == DialogResult.Yes)
                limparTela();
            else
            {
                panel_adicionar.Visible = false;
            }
        }

        private void btn_home_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            if (Forms.controleMenuHomeAdmin == null)
            {
                Forms.controleMenuHomeAdmin = new menuHomeAdmin(Conteudo);
                Conteudo.Controls.Add(Forms.controleMenuHomeAdmin);
            }
            Forms.controleMenuHomeAdmin.Visible = true;
            this.Refresh();
        }

        private void btn_salvar_Click(object sender, EventArgs e)
        {
            bool validador = true;

            if (txt_pergunta.Text == string.Empty)
                validador = false;

            if(txt_resp1.Text == string.Empty)
                validador = false;

            if (txt_resp2.Text == string.Empty)
                validador = false;


            if (validador == false)
                MessageBox.Show("ATENÇÃO! \n\n Verifique os campos em branco");
            else
            {
                if (chk_ativar.Checked == true)
                {
                    if (pesquisaBo.verificarQuantidadeAtivos())
                    {
                        novapesquisa.ativar = "S";
                        cadastrarPesquisa();
                    }
                    else
                    {
                        MessageBox.Show("Já existem duas pesquisas ativas, você não pode ativar essa pesquisa");
                    }
                }
                else
                {
                    novapesquisa.ativar = "N";
                    cadastrarPesquisa();
                }
            }
        }

        public void cadastrarPesquisa()
        {
            string caption = "Cadastro de Pesquisa";
            var result = MessageBox.Show(" Os dados da pesquisa não poderam ser alterados. \n Tem certeza que deseja cadastrar essa pesquisa? ", caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (result == DialogResult.Yes)
            {
                novapesquisa.pergunta = txt_pergunta.Text;
                novapesquisa.respostaUm = txt_resp1.Text;
                novapesquisa.respostaDois = txt_resp2.Text;
                novapesquisa.respostaTres = txt_resp3.Text;

                pesquisaBo.InserirDados(novapesquisa);
                registrarOutraPesquisa();
                grid_pesquisa.DataSource = pesquisaBo.recebePesquisa();
            }
        }

        private void btn_ativo_Click(object sender, EventArgs e)
        {
            if (pesquisaBo.validarSemPesquisas())
            {
                MessageBox.Show("Não existem pesquisas para ativar ou desativar");
            }
            else
            {
                int linha;
                string valor;
                linha = grid_pesquisa.CurrentRow.Index;
                valor = this.grid_pesquisa.Rows[linha].Cells[0].Value.ToString();

                novapesquisa = pesquisaBo.BuscarAtivo(Convert.ToInt32(valor));

                if (novapesquisa.ativar == "N         ")
                {
                    if (pesquisaBo.verificarQuantidadeAtivos())
                    {
                        novapesquisa.ativar = "S";
                        pesquisaBo.AlterarAtivo(novapesquisa);
                        MessageBox.Show("A Pesquisa foi ativada com sucesso");
                    }
                    else
                        MessageBox.Show("Atenção! Você só pode ativar 2 pesquisas por vez.");
                }
                else
                {
                    novapesquisa.ativar = "N";
                    pesquisaBo.AlterarAtivo(novapesquisa);
                    MessageBox.Show("A Pesquisa foi desativada com sucesso");
                }
                grid_pesquisa.DataSource = pesquisaBo.recebePesquisa();
            }
        }

        private void btn_excluir_Click(object sender, EventArgs e)
        {
            if (pesquisaBo.validarSemPesquisas())
            {
                MessageBox.Show("Não existem pesquisas para serem excluidas");
            }
            else
            {
                string caption = "Excluir Pesquisa";
                var result = MessageBox.Show("ATENÇÃO! Se a pesquisa for excluida todos os dados referentes a ela tambem serão excluidos. \nTem certeza que deseja excluir essa pesquisa? ", caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (result == DialogResult.Yes)
                {
                    int linha;
                    string valor;
                    linha = grid_pesquisa.CurrentRow.Index;
                    valor = this.grid_pesquisa.Rows[linha].Cells[0].Value.ToString();

                    pesquisaBo.deletarPesquisa(Convert.ToInt32(valor));
                    grid_pesquisa.DataSource = pesquisaBo.recebePesquisa();
                }
            }
        }
    }
}
